首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • Java字节码-Java快速进阶教程

    Java 中的字节码是一组高度优化的 Java 虚拟机 (JVM) 指令,用于读取和解释以运行 Java 程序。 字节码是只能在 JVM 上运行的二进制程序代码。 它由Java解释器并生成可以直接在真机的指令。 Java字节码的特征 Java 字节码有两个最重要的特征,如下所示: 字节码独立于处理器,即Java程序可以在任何处理器架构上执行。 字节码在Java中是如何工作的? 当我们编写Java程序时,源代码(以.java文件的形式)由Java编译器编译并以.class文件的形式转换为字节码。 看看下2张图就能更好地理解它了。 .java和.class的区别 Java 源代码文件(扩展名为.java)被编译为字节码(具有.class扩展名),然后由名为 JVM 的 Java 处理器解释和执行。 关键点: 1. Java 中的字节码是 Java 编译器生成并由 Java 解释器 (JVM) 执行的一组字节长的指令。 2.

    42810编辑于 2025-04-05
  • RabbitMQ简介-Java快速进阶教程

    我们自然会使用 Java 客户端与 RabbitMQ 服务器进行交互;此客户端的Maven 依赖项为: <dependency> <groupId>com.rabbitmq</groupId> amqp-client</artifactId> <version>4.0.0</version> </dependency>Copy 使用官方指南运行 RabbitMQ 代理后,我们需要使用 java

    22200编辑于 2025-04-05
  • AtomicStampedReference 指南-Java快速进阶教程

    在本教程中,我们将仔细研究如何最好地使用它。 2. 为什么我们需要AtomicStampedReference?

    31300编辑于 2025-04-05
  • ZGC简介-Java快速进阶教程

    为了解决这个问题,Java 11引入了Z垃圾收集器(ZGC)作为实验性垃圾收集器(GC)实现。 在本教程中,我们将看到ZGC 如何设法在数 TB 的堆上保持较短的暂停时间。 2. 垃圾回收 当我们创建一个 Java 应用程序时,我们不必释放我们分配的内存,因为垃圾收集器会为我们完成这项工作。总之,GC 通过引用链监视我们可以从应用程序中访问哪些对象,并释放我们无法访问的对象。

    43800编辑于 2025-04-05
  • Stack学习-Java快速进阶教程

    栈类是在Java 1.0版本中引入的。它存在于java.util.Stack<E>包中。 这个类现在被认为是 Java 中的遗留类,因为它与 Java Collections Framework 不一致。因此建议大家使用新的Java ArrayDeque 类。 Java Stack 类的层次结构 Java Stack 类扩展了扩展 AbstractList 类的向量类。它实现了列表接口和随机访问接口。栈类还实现了可序列化和可克隆接口。 java 中栈的层次结构图如下图所示。 栈类的功能 Java 中的栈有几个特性,如下所示: 1. 栈具有“后进先出”检索的元素的能力。 2. 在 Java 栈中,所有操作都发生在栈的顶部。 3. 推送操作将元素插入栈顶部。 4.

    17600编辑于 2025-04-05
  • Apache Flink with Java 简介-Java快速进阶教程

    Maven 依赖 首先,我们需要将 Maven 依赖项添加到 flink-java 和flink-test-utils库中: <dependency> <groupId>org.apache.flink </groupId> <artifactId>flink-java</artifactId> <version>1.2.0</version> </dependency> <dependency

    33100编辑于 2025-04-05
  • ProcessBuilder API 指南-Java快速进阶教程

    在本教程中,我们将看看 Java 如何使用ProcessBuilderAPI 缓解这种情况。 2.进程生成器接口 类提供了用于创建和配置操作系统进程的方法。 使用ProcessBuilder打印 Java 版本 在第一个示例中,我们将使用一个参数运行java命令以获取版本。 让我们回到原始示例来打印出 Java 版本。 结论 总而言之,在本教程中,我们详细探讨了java.lang.ProcessBuilderAPI。 首先,我们首先解释了 API 可以做什么,并总结了最重要的方法。 接下来,我们看了一些实际的例子。 最后,我们研究了 Java 9 中 API 中引入了哪些新增功能。

    46200编辑于 2025-04-05
  • Process API 指南-Java快速进阶教程

    简介 在本教程中,我们将深入了解进程API。 它所指的进程是一个正在执行的应用程序。Process类提供与这些进程交互的方法,包括提取输出、执行输入、监视生命周期、检查退出状态以及销毁(终止)它。 \\com\\java9\\process\\OutputStreamExample.java"); process = Runtime.getRuntime() .exec("java -cp src/main/java com.baeldung.java9.process.OutputStreamExample"); BufferedReader output = new 代码中执行Java代码的应用几乎是无限的。 \\com\\java9\\process\\OutputStreamExample.java"); process = Runtime.getRuntime() .exec("java

    50210编辑于 2025-04-05
  • Java 9 变量句柄揭秘-Java快速进阶教程

    简介 Java 9为开发人员带来了许多新的有用功能。 其中之一是java.lang.invoke.VarHandleAPI - 表示变量句柄 - 我们将在本文中探讨。 2. 什么是可变手柄? VarHandle的目标是定义一个标准,用于调用字段和数组元素上的 java.util.concurrent.atomic和sun.misc.Unsafe操作的等效项。 例如,以下是Java本身如何在内部使用VarHandles来实现AtomicReference: private volatile V value; private static final VarHandle 在Java 9之前,此操作的等效API是Unsafe类和来自ReflectionAPI的setAccessible()方法。 但是,这种方法有其缺点。例如,它仅适用于变量的特定实例。

    38611编辑于 2025-04-05
  • TreeMap工作原理-Java快速进阶教程

    Java 中TreeMap的内部工作原理 现在,我们将讨论一个示例,看看TreeMap在内部是如何工作的。 /** * */ package com.jack.map; import java.util.Map; import java.util.TreeMap; /** * @author Jack.Yang

    34810编辑于 2025-04-05
  • Java 中的分支预测-Java快速进阶教程

    分支预测是计算机科学中一个有趣的概念,可以对我们应用程序的性能产生深远的影响。然而,它通常没有得到很好的理解,大多数开发人员很少关注它。

    33200编辑于 2025-04-05
  • 来自专栏常用算法专栏

    Java中的梯度下降-Java快速进阶教程

    简介 在本教程中,我们将了解梯度下降算法。我们将在 Java 中实现该算法并逐步说明它。 2. 什么是梯度下降? 梯度下降是一种优化算法,用于查找给定函数的局部最小值。 我们将在本教程中说明和实现回溯梯度下降。 4. 分步说明 梯度下降需要一个函数和一个起点作为输入。让我们定义并绘制一个函数: 我们可以从任何想要的点开始。 在 Java 中的实现 有几种方法可以实现梯度下降。在这里,我们不计算函数的导数来找到斜率的方向,因此我们的实现也适用于不可微函数。

    21200编辑于 2025-04-05
  • Java 9 CompletableFuture API 改进-Java快速进阶教程

    简介 Java 9对CompletableFuture类进行了一些更改。 结论 总之,Java 9 对CompletableFutureAPI 进行了一些补充,它现在对子类化有了更好的支持,这要归功于新的 IncompleteFuture虚拟构造函数,可以控制大多数 CompletionStage

    30100编辑于 2025-04-05
  • Java 中的 ThreadLocal 简介-Java快速进阶教程

    概述 在本教程中,我们将研究java.lang包中的ThreadLocal构造。这使我们能够单独存储当前线程的数据,并简单地将其包装在特殊类型的对象中。 这是在 Java 中实现线程安全的合理方法。但是,当我们一起使用ThreadLocal和线程池时,我们应该格外小心。

    25810编辑于 2025-04-05
  • Java 中的线程池简介-Java快速进阶教程

    概述 本教程介绍了 Java 中的线程池。我们将从标准Java库中的不同实现开始,然后查看Google的Guava库。 2. 线程池 在 Java 中,线程映射到系统级线程,这些线程是操作系统的资源。 我们使用Executor和ExecutorService接口来处理Java中的不同线程池实现。通常,我们应该使代码与线程池的实际实现分离,并在整个应用程序中使用这些接口。 这两者都是函数接口,我们可以将它们作为 lambda 传递(从 Java 8 开始)。 Runnable 的单一方法不会引发异常,也不会返回值。 有关使用 ExecutorService 接口和Future接口的更多示例,请查看ExecutorService使用指南-Java快速入门教程 。 这个框架在我们的fork-join使用框架指南-Java快速入门教程 中有详尽的描述。 让我们看一个简单的示例,该示例使用ForkJoinPool遍历节点树并计算所有叶值的总和。

    38010编辑于 2025-04-05
  • Java 中的原子变量简介-Java快速进阶教程

    sync关键字确保一次只有一个线程可以进入该方法(要了解有关锁定和同步的更多信息,请参阅 –Java 中的同步关键字指南): public class SafeCounterWithLock { Java中的原子变量 Java 中最常用的原子变量类是 AtomicInteger、AtomicLong、AtomicBoolean和AtomicReference。 从Java 9开始,这个方法在所有原子实现中都已弃用,取而代之的是weakCompareAndSetPlain()。

    29000编辑于 2025-04-05
  • Java 线程死锁和活锁-Java快速进阶教程

    在本教程中,我们将在 Java 示例的帮助下研究两个这样的问题,死锁和活锁。 2. 死锁 2.1. 什么是死锁? 当两个或多个线程永远等待另一个线程持有的锁或资源时,就会发生死锁。 死锁示例 首先,让我们看一个简单的 Java 示例来理解死锁。 在此示例中,我们将创建两个线程,T1和T2。线程T1调用操作1,线程T2调用操作。 避免死锁 死锁是 Java 中常见的并发问题。因此,我们应该设计一个 Java 应用程序来避免任何潜在的死锁情况。 首先,我们应该避免为一个线程获取多个锁的需要。

    28010编辑于 2025-04-05
  • Java 中的不可变对象-Java快速进阶教程

    概述 在本教程中,我们将学习是什么使对象不可变,如何在 Java 中实现不可变性,以及这样做有什么好处。 2. 什么是不可变对象? 不可变对象是其内部状态在完全创建后保持不变的对象。 Java中的final 关键字 在尝试在 Java 中实现不变性之前,我们应该讨论final关键字。 在 Java 中,变量默认是可变的,这意味着我们可以更改它们保存的值。 通过在声明变量时使用final关键字,Java 编译器不允许我们更改该变量的值。 Java中的不可变性 现在我们知道了如何避免更改变量的内容,我们可以使用它来构建不可变对象的 API。 构建不可变对象的 API 需要我们保证无论我们如何使用其 API 都不会更改其内部状态。 Money { private final double amount; private final Currency currency; // ... }Copy 请注意,Java

    32100编辑于 2025-04-05
  • 什么是 Java 编译器-Java快速进阶教程

    Java编译器和解释器是程序员在编程过程中使用的Java语言中最基本的工具。 Java 中的编译器是用于编译 Java 程序的计算机程序。它是独立于平台的。 它将源代码(.java文件)转换(转换)为字节码(.class文件)。 换句话说,编译器(javac.exe)在编译过程中生成字节码。 完整 Java 编译器选项的屏幕截图如下所示: 编译器的主要职责 除了编译源程序外,Java 编译器还负责以下任务: a)Java编译器检查句法错误(语法错误)。 当它在程序中发现错误时,它还生成一个包含所有错误消息的列表,并且不生成目标代码,除非Java编译器报告的错误得到纠正。 b)它在Java虚拟机(JVM)的帮助下将源代码转换为字节码。 Java 编译器如何工作? 我们可以在上图中看到,程序员编写的Java源代码由javac编译,然后生成java字节码(.class文件),该字节码以文件(扩展名.class)自动保存在磁盘上。

    45000编辑于 2025-04-05
  • Java 中的常见并发陷阱-Java快速进阶教程

    简介 在本教程中,我们将看到 Java 中一些最常见的并发问题。我们还将学习如何避免它们及其主要原因。 2. 使用线程安全对象 2.1. 共享对象 线程主要通过共享对相同对象的访问来进行通信。 出于这个原因,Java提供了并发集合,如CopyOnWriteArrayList和ConcurrentHashMap,可以由多个线程同时访问: CopyOnWriteArrayList<String>

    47710编辑于 2025-04-05
领券